/* import {createStore} from "vuex";
 
export const store = createStore({
    // 类似 data 属性
    state: {
    },
    // 类似 computed 属性
    getters: {},
    // 修改state中元素值的唯一方法。类似于事件
    mutations: {},
    // 异步操作时使用
    actions: {},
    // 遇见大型项目时，数据量大，store就会显得很臃肿。vuex语序我们将store分割成模块。每个模块有自己的state、getters、mutations、actions。
    modules: {}
}); */

import Vuex from 'vuex';

// 定义一个带有字符串索引签名的类型
interface Modules {
  [key: string]: any;
}

// 获取 modules 目录中的所有 .ts 文件路径
const context = import.meta.glob('./modules/*.ts', { eager: true });

const modules: Modules = Object.keys(context).reduce((modules, file) => {
  const matchResult = file.match(/\/modules\/(.*)\.ts$/);
  if (matchResult) {
    const moduleName = matchResult[1];
    const value = (context[file] as { default: any }).default;
    modules[moduleName] = value;
  }
  return modules;
}, {} as Modules);

const store = new Vuex.Store({
  modules,
});

export default store;


